Zum Hauptinhalt springen

Plan-ahead API

tipp

Die Plan-ahead-API ist dazu gedacht, Zeitpläne im Voraus zu senden. Für die Live-Steuerung siehe stattdessen Live MQTT-Steuerung.

Was Sie benötigen

  1. Einen API-Benutzernamen & ein Passwort. Sie können hierfür Ihr Insights-Konto verwenden oder ein API-Konto anfordern, indem Sie eine E-Mail an support@eniris.be senden und Ihre Gerätenummer deutlich angeben.
  2. Entwicklungsumgebung für Python (oder einen anderen MQTT-Client). Dieses Handbuch verwendet ein einfaches Beispiel, das in Python geschrieben wurde, um Ihnen den Einstieg in MQTT und das Senden von Befehlen zu erleichtern. Wir empfehlen die Verwendung von Python aufgrund der Benutzerfreundlichkeit, aber jeder andere MQTT-Client wird unterstützt.

Erstkonfiguration (Ausgangspunkt für neue Nutzer)

1. Finden Sie die GeräteeIDs der zu steuernden Geräte

Die Geräte-ID (auch nodeId genannt) ist ein eindeutiger Identifikator für jedes Gerät in unserem System und wird beim Senden von Befehlen an die Geräte verwendet.

Momentan ist der einfachste Weg, Ihre IDs zu erhalten, indem Sie zu folgendem navigieren: http://<CONTROLLER_IP>/debugger

Erweitern Sie das Feld 'Metadaten' und notieren Sie sich jede nodeId aller Geräte, die Sie steuern möchten. Diese IDs benötigen Sie in einem späteren Schritt.

Bild 1

2. Fügen Sie Ihre Geräte hinzu

Melden Sie sich bei der Inbetriebnahmeoberfläche an und stellen Sie sicher, dass die Geräte hinzugefügt sind zu SmartgridOne Controller.

3. Fügen Sie das API-Externsignal hinzu

Bild 1
Bild 1
Bild 1
Bild 1

4. Geben Sie das Sammler-Token ein

Geben Sie einfach die Seriennummer des SmartgridOne Controller hier ein und klicken Sie auf Absenden.

5. Wählen Sie die Geräte aus, die Sie einbeziehen möchten

Auf dieser Seite haben Sie die Möglichkeit, Geräte für die Fernsteuerung ein- oder auszuschließen. Stellen Sie sicher, dass Sie alle Kontrollkästchen der Geräte markieren, die Sie einbeziehen möchten.

Bild 1

6. Datenquelle wurde hinzugefügt

Die Fernsteueroberfläche wurde nun auf dem SmartgridOne Controller aktiviert. Sie können jetzt beginnen, Ihre Befehle an die Geräte zu senden.

warnung

Vergessen Sie nicht, ein Rückfallregime für den SmartgridOne Controller einzustellen! Ein lokaler Steuerungsmodus muss zusätzlich zu den externen API-Signalen, die Sie senden, konfiguriert werden. Die lokale Steuerung wird als Rückfall verwendet, falls der SmartgridOne Controller die Internetverbindung verliert oder es andere Gründe gibt, die dazu führen, dass das API-Signal den SmartgridOne Controller nicht erreichen kann.

Senden von Fernsteuerbefehlen mit Python

Unten finden Sie einen Python-Snippet, wie Sie Solar- oder Batterien steuern können.

tipp

Schauen Sie sich das Dokument Anwendungsleitfaden - Fernsetpunkte für eine umfassendere Erklärung mit allen Richtlinien an.

Erforderliches Paket: pip install eniris

# %% Importe
from eniris import ApiDriver
from eniris.point import Point
from eniris.point.writer import (PointDuplicateFilter, DirectPointToTelemessageWriter)
from eniris.telemessage.writer import PooledTelemessageWriter
from datetime import datetime, timezone

# %% Konstanten
COMMAND_UNTIL = '2024-04-16T10:26:00+02:00' # JJJJ-MM-TT HH:MM:SS+00:00
SN = '<ERSETZEN>'
COMMAND = fields = {'policy': 2, 'powerSetpoint_W': 0.0} # 0: Standard (Eigenverbrauch); 2: Folgen des Sollwerts

# %% Begin der Reduzierung
curtail_until = datetime.fromisoformat(COMMAND_UNTIL).astimezone(timezone.utc)
print(f'Folgender Befehl bis: {curtail_until}')
apiUsername = "<ERSETZEN>"
apiPassword = "<ERSETZEN>"

# Erstellen Sie einen API-Treiber und einen Punkteschreiber mit der gewünschten Funktionalität
driver = ApiDriver(apiUsername, apiPassword)
writer = PointDuplicateFilter(
DirectPointToTelemessageWriter(
PooledTelemessageWriter(
authorizationHeaderFunction=driver.accesstoken,
params={"u": SN},
)
)
)
namespace = {'database': 'SGC', 'retentionPolicy': 'rp_one_s'}
tags = {
"serialNr": SN,
"nodeId": '<ERSETZEN>',
}

writer.writePoints([Point(namespace, 'remoteControlSignals', curtail_until, tags, fields)])
writer.flush()
print('Versendet')

Beachten Sie besonders:

  • Die 'COMMAND_UNTIL': Dies ist ein zeitzonenbewusster Zeitstempel, der das Enddatum Ihres Befehls angibt.
  • Der 'COMMAND': Dies sollte gemäß dem Befehl geändert werden, den Sie ausführen möchten.
    • Z.B.: für Batterien wird die Richtlinie 2 mit powerSetpoint_W auf 1000 die Batterie mit 1 kW aufladen.
    • Für Solar wird die Richtlinie 2 mit powerSetpoint_W auf 0 die Solarproduktion deaktivieren.
    • Nachdem Ihr Befehl beendet ist, wird automatisch auf die Standardsteuerung zurückgegriffen (wie im SmartgridOne Controller konfiguriert).
    • (es werden komplexere Richtlinien unterstützt, aber noch nicht in dieser Anleitung hinzugefügt)
  • Die 'tags'-Variable: Diese sollte gemäß der SN des SmartgridOne Controller geändert werden, wobei nodeId auf die Geräte-ID eingestellt werden sollte, die in einem früheren Schritt dieses Handbuchs extrahiert wurde.
tipp

Schauen Sie sich das Dokument Anwendungsleitfaden - Fernsetpunkte für eine umfassendere Erklärung mit allen Richtlinien an.